package 真题;
/**
 * @author： li
 * @date： 2022-03-09 20:29
 * @version 1.0
 */

public class 卡片 {
    public static void main(String[] args) {
        int[] cnt = new int[10]; //计数器，存入1~9卡片的使用次数，并赋予初始值0 (也可以放全局变量如上所示，c++全局变量默认值为0)
        int count = 2021;//每种卡片2021张
        int a;//a为最终求的数
        for(int i = 1; ; i ++ )//循环终止条件在后面判断
        {
            int n=i;
            while(n!=0)
            {
                cnt[n % 10] ++;
                n /= 10;
            }
            //因为刚好等于的时候可能这个数已经用了两张1（例如：11）肯定时超过卡片1的数量的，所以不能在相等的时候停止循环
            if(cnt[1]>count) //模拟了几组数发现1卡片一定是最先不够用的，所以如果1卡片的个数超范围时停止循环
            {
                a = i-1; //要注意这个数是拼不成的，就如题例中的11，所求结果要是当前数减去1
                break;
            }
        }
        System.out.println(a);
    }
}
